package value

import (
	"database/sql"
	"server/framework/orm/session/model"
)

type Value interface {
	// SetColumns 反射设置值；selector中将db返回结果通过row.Scan塞进&user{}中
	SetColumns(rows *sql.Rows, quote string) error
	// Field 反射获取值；inserter中遍历&user{Name: "zly", Birthdate: "1999-06-06"}获取每个字段及其值生成相应的sql语句
	Field(colName string) (any, error)
}

// Creator 支持unsafe、reflect两种方式，unsafe性能更好，默认使用unsafe
type Creator func(val any, model *model.Model) (Value, error)

type Values interface {
	SetValues(rows *sql.Rows) error // 反射设置多值
}
